export default {
	props: {
		scrollbarSize: {
			type: Number,
			default: 0,
		},
		fixedLeftColumns: {
			type: Array,
			default: () => [],
		},
		data: {
			type: Array,
			default: () => [],
		},
		transColumns: {
			type: Array,
			default: () => [],
		},
		border: {
			type: Boolean,
			default: false,
		},
		showSummary: {
			type: Boolean,
			default: false,
		},
		summaryMethod: {
			type: Function,
		},
		sumText: {
			type: String,
			default: '合计',
		},
		headerFooterTableLeft: {
			type: Number,
			default: 0,
		},
		handleFooterTableScrollLeft: Function,
	},
	data() {
		return {
			sums: [],
		}
	},
	watch: {
		data: {
			deep: true,
			immediate: true,
			handler(newValue, oldValue) {
				let sums = []
				if (this.summaryMethod) {
					sums = this.summaryMethod({
						columns: this.transColumns,
						data: this.data,
					})
				} else {
					this.transColumns.forEach((column, index) => {
						if (index === 0) {
							sums[index] = this.sumText
							return
						}
						const values = this.data.map((item) =>
							Number(item[column.name])
						)
						const precisions = []
						let notNumber = true
						values.forEach((value) => {
							if (!isNaN(value)) {
								notNumber = false
								let decimal = ('' + value).split('.')[1]
								precisions.push(decimal ? decimal.length : 0)
							}
						})
						const precision = Math.max.apply(null, precisions)
						if (!notNumber) {
							sums[index] = values.reduce((prev, curr) => {
								const value = Number(curr)
								if (!isNaN(value)) {
									return parseFloat(
										(prev + curr).toFixed(
											Math.min(precision, 20)
										)
									)
								} else {
									return prev
								}
							}, 0)
						} else {
							sums[index] = ''
						}
					})
				}
				this.sums = sums
			},
		},
	},
}
